home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / OFDb (DE).ifs < prev    next >
Text File  |  2005-03-13  |  10KB  |  349 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Fabian Filipczyk (<link>FFJaro@gmx.de</link>)
  8. Title=OFDb
  9. Description=Online-Filmdatenbank (OFDb) import with small picture (DE)
  10. Site=http://www.ofdb.de
  11. Language=DE
  12. Version=
  13. Requires=3.5.0
  14. Comments=
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program OFDB_DE;
  23. var
  24.   MovieName: string;
  25.  
  26. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  27. var
  28.   i: Integer;
  29. begin
  30.   result := -1;
  31.   if StartAt < 0 then
  32.     StartAt := 0;
  33.   for i := StartAt to List.Count-1 do
  34.     if Pos(Pattern, List.GetString(i)) <> 0 then
  35.     begin
  36.       result := i;
  37.       Break;
  38.     end;
  39. end;
  40. ///////////////////////////////////////////////////////////////////
  41.  
  42. procedure AnalyzePage(Address: string);
  43. var
  44.   Page: TStringList;
  45.   LineNr: Integer;
  46. begin
  47.   Page := TStringList.Create;
  48.   Page.Text := GetPage(Address);
  49.  //  if pos('<title>OFDb - Suchergebnis', Page.Text) = 0 then
  50.   if pos('<title>OFDb - Übersicht der Filmdaten</title>', Page.Text) > 0 then
  51.   begin
  52.     SetField(fieldURL, Address);
  53.     AnalyzeMoviePage(Page)
  54.   end else
  55.   begin
  56.     PickTreeClear;
  57.     LineNr := FindLine('<b>Titel:</b>', Page, 0);
  58.     if LineNr > 0 then
  59.     begin PickTreeAdd('Filme :', '');
  60.       AddMoviesTitles(Page, LineNr);
  61.       if PickTreeExec(Address) then
  62.          AnalyzePage(Address);
  63.     end;
  64.   end;
  65.   Page.Free;
  66. end;
  67.  
  68.  
  69. procedure AnalyzeMoviePage(Page: TStringList);
  70. var
  71.   TomString, Line, Temp, Value: string;
  72.   LineNr, IntValue: Integer;
  73.   BeginPos, EndPos: Integer;
  74. begin
  75.   
  76.   // Picture
  77.   
  78.   //LineNr := FindLine('http://www.hsi-infopool.de/zensur/movies/images/film', Page, 0);
  79.   //http://www.ofdb.de/
  80.   //http://www.ofdb.de/images/film/0/179.jpg
  81.   //images/film/0/179.jpg
  82.  
  83.   LineNr := FindLine('images/film/', Page, 0);
  84.   if LineNr > -1 then
  85.   begin
  86.     Line := Page.GetString(LineNr);
  87.     BeginPos := pos('<img src="', Line) + 10;
  88.  //   BeginPos := pos('<img src=''', Line) + 10;
  89.     if BeginPos > 10 then
  90.     begin
  91. //      EndPos := pos(' alt=', Line)-2;
  92.       EndPos := pos(' alt=', Line)-1;
  93.  //     Value := copy(Line, BeginPos, EndPos - BeginPos);
  94.       Value := copy(Line, BeginPos, EndPos - BeginPos);
  95.       TomString:= 'http://www.ofdb.de/'+Value;
  96.       //Input('OFDb', TomString, MovieName)
  97.       GetPicture(TomString);
  98.     end;
  99.   end;
  100.   
  101.   // Original & Translated Title
  102.   LineNr := FindLine('Originaltitel:</font>', Page, 0);
  103.   if LineNr > -1 then
  104.   begin
  105.     LineNr:= LineNr+2;
  106.     Line := Page.GetString(LineNr);
  107.     BeginPos := pos('class="Daten"><b>', Line) + 17;
  108.     EndPos := pos('</b></font>', Line);
  109.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  110.     SetField(fieldOriginalTitle, Value);
  111.     LineNr := Findline('sans-serif" size="3"><b>', Page, 0);
  112.     if LineNr > -1 then
  113.     begin
  114.       Line:= Page.GetString(LineNr);
  115.       BeginPos := pos('sans-serif" size="3"><b>',Line) +24; 
  116.       Endpos :=  pos('</b></font></td>',Line);
  117.       Value := copy(Line,BeginPos, Endpos-Beginpos);
  118.       SetField(fieldTranslatedTitle,Value);  
  119.     end;
  120.   end;
  121.   
  122.   //Country
  123.   LineNr := Findline('Herstellungsland:', Page, 0);
  124.   if LineNr > -1 then
  125.   begin
  126.     LineNr := LineNr+3;
  127.     Line:= Page.GetString(LineNr);
  128.     Delete(Line, 1, pos('<a',Line)-1);
  129.     BeginPos := pos('">',Line) +2;
  130.     Endpos :=  pos('</a><br>',Line);
  131.     Value := copy(Line,BeginPos, Endpos-Beginpos);
  132.     SetField(fieldCountry, Value);
  133.   end;
  134.   
  135.   // Year
  136.   LineNr := Findline('Erscheinungsjahr:', Page, 0);
  137.   if LineNr > -1 then
  138.   begin
  139.     LineNr := LineNr+3;
  140.     Line:= Page.GetString(LineNr);
  141.     Delete(Line, 1, pos('<a',Line)-1);
  142.     BeginPos := pos('">',Line) +2; 
  143.     Endpos :=  pos('</a></b>',Line);
  144.     Value := copy(Line,BeginPos, Endpos-Beginpos);
  145.     SetField(fieldYear, Value); 
  146.   end;    
  147.   
  148.   // Category
  149.   LineNr := Findline('Genre(s):', Page, 0);
  150.   if LineNr > -1 then
  151.   begin
  152.     Value:= '';
  153.     LineNr := LineNr+2;
  154.     Line:= Page.GetString(LineNr);
  155.     repeat
  156.       Delete(Line, 1, pos('<a',Line)-1);
  157.       BeginPos := pos('">', Line);
  158.       if BeginPos > 0 then
  159.       begin
  160.         Delete(Line, 1, BeginPos +1 );
  161.         Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  162.         Value:= Value+', '+ Temp ;
  163.       end;
  164.     until (BeginPos < 1);
  165.    Value:= copy(Value, 3,length(Value)-1);
  166.    SetField(fieldCategory, Value);
  167.   end;
  168.     
  169.   // Actors
  170.   LineNr := Findline('Darsteller', Page, 0);
  171.   if LineNr > -1 then
  172.   begin
  173.     LineNr := LineNr+3;
  174.     Line:= Page.GetString(LineNr);
  175.     if pos('[mehr]', Line) > 0 then
  176.     begin 
  177.       BeginPos := pos('<a href="view.php?page=film',Line) +9; 
  178.       Endpos :=  pos('">[mehr]</a>',Line);
  179.       Value := copy(Line,BeginPos, Endpos-Beginpos);
  180.       GetActors(Value);
  181.     end else 
  182.     begin
  183.       Value:= '';
  184.       repeat
  185.         Delete(Line, 1, pos('<a',Line)-1);
  186.         BeginPos := pos('">', Line);
  187.         if BeginPos > 0 then
  188.         begin
  189.           Delete(Line, 1, BeginPos +1 );
  190.           Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  191.           Value:= Value+', '+ Temp ;
  192.         end;
  193.       until (BeginPos < 1);
  194.       Value:= copy(Value, 3,length(Value)-1);
  195.       SetField(fieldActors, Value);
  196.     end;
  197.   end; 
  198.        
  199.   //Director
  200.   LineNr := Findline('Regie', Page, 0);
  201.   if LineNr > -1 then
  202.   begin
  203.     Value:= '';
  204.     LineNr := LineNr+3;
  205.     Line:= Page.GetString(LineNr);
  206.     repeat
  207.       Delete(Line, 1, pos('<a',Line)-1);
  208.       BeginPos := pos('">', Line);
  209.       if BeginPos > 0 then
  210.       begin
  211.         Delete(Line, 1, BeginPos +1 );
  212.         Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  213.         Value:= Value+', '+ Temp ;
  214.       end;
  215.     until (BeginPos < 1);
  216.     Value:= copy(Value, 3,length(Value)-1);
  217.     SetField(fieldDirector, Value);
  218.   end;
  219.  
  220.   //Description
  221.   LineNr := Findline('<b>Inhalt:</b>', Page, 0);
  222.   if LineNr > -1 then
  223.   begin
  224.     LineNr:=Findline('<a href="view.php?page=inhalt', Page,0);
  225.     Line:= Page.GetString(LineNr);
  226.     BeginPos := pos('<a href="view.php?page=inhalt', Line)+9;
  227.     EndPos:= pos('"><b>[mehr]', Line);
  228.     Value:=copy(Line, BeginPos, EndPos - BeginPos);
  229.     GetDescriptions(Value);
  230.   end;      
  231.   
  232.   //Rating
  233.   LineNr := Findline('<br>Note:', Page, 0);
  234.   if LineNr > -1 then
  235.   begin
  236.     Line:= Page.GetString(LineNr);
  237.     BeginPos := pos('<br>Note:',Line) +10;
  238.     EndPos:= pos('  ',Line);
  239.     Value := copy(Line,BeginPos, Endpos-Beginpos);
  240.     Value := IntToStr(Round(StrToInt(StrGet(Line, BeginPos), 0) + (StrToInt(StrGet(Line, BeginPos +3), 0) /10)));
  241.     SetField(fieldRating,Value );
  242.   end;
  243.   //DisplayResults;
  244. end;
  245.    
  246.     
  247. procedure GetActors(Address: string);
  248. var
  249.   Line,Temp, Value: string;
  250.   LineNr: Integer;
  251.   BeginPos, EndPos: Integer;
  252.   Page: TStringList;
  253. begin
  254.   
  255.   Page := TStringList.Create;
  256.   Page.Text := GetPage('http://www.ofdb.de/'+Address);
  257.   LineNr := Findline('Darsteller', Page, 0);
  258.   if LineNr > -1 then
  259.   begin
  260.     Value:= '';
  261.     LineNr := LineNr+3;
  262.     Line:= Page.GetString(LineNr);
  263.     repeat
  264.       Delete(Line, 1, pos('<a',Line)-1);
  265.       BeginPos := pos('">', Line);
  266.       if BeginPos > 0 then
  267.       begin
  268.         Delete(Line, 1, BeginPos +1 );
  269.         Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  270.         Value:= Value+', '+ Temp ;
  271.       end;
  272.     until (BeginPos < 1);
  273.     Value:= copy(Value, 3,length(Value)-1);
  274.     SetField(fieldActors, Value);
  275.   end;
  276.   Page.Free;
  277. end;        
  278.     
  279.     
  280. procedure GetDescriptions(Address: string);
  281. var
  282.   Line, Temp,Value: string;
  283.   LineNr: Integer;
  284.   BeginPos, EndPos: Integer;
  285.   Page: TStringList;
  286.   
  287. begin
  288.   Temp:= '';
  289.   Page := TStringList.Create;
  290.   Page.Text := GetPage('http://www.ofdb.de/' + Address);
  291.   LineNr := FindLine('Eine Inhaltsangabe von', Page, 0);
  292.   if LineNr > -1 then
  293.   begin
  294.     Line := Page.GetString(LineNr);
  295.     BeginPos := pos('</a></b><br><br>', Line) + 16;
  296.     while (pos('<br />', Line) >0) do
  297.          begin 
  298.            EndPos := pos('<br />', Line);
  299.            Temp := Temp + copy(Line, BeginPos, EndPos - BeginPos);
  300.            LineNr:=LineNr+1;
  301.            Line:=Page.GetString(LineNr);
  302.            BeginPos:=1;
  303.          end;    
  304.     EndPos := pos('</font></p>', Line);
  305.     Temp:= Temp +  copy(Line, BeginPos, EndPos - BeginPos);
  306.     Value:= Temp;
  307.     SetField(fieldDescription, Value);
  308.   end;
  309.   Page.Free;
  310. end;
  311.    
  312.  
  313. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  314. var
  315.   Line: string;
  316.   MovieTitle, MovieAddress: string;
  317.   StartPos, EndPos: Integer;
  318.  
  319. begin
  320.   Line := Page.GetString(LineNr);
  321.   repeat
  322.     StartPos := pos('<a href=''view.php?page=film&fid=', Line);
  323.     if StartPos > 0 then
  324.     begin
  325.       Delete(Line, 1, StartPos + 8);
  326.       MovieAddress := copy(Line, 1, pos('''>', Line) - 1);
  327.       StartPos := pos('''>', Line) +2;
  328.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
  329.       HTMLRemoveTags(MovieTitle);
  330.       PickTreeAdd(MovieTitle , 'http://www.ofdb.de/' + MovieAddress);
  331.     end;
  332.   until (StartPos < 1);
  333. end;
  334.  
  335. begin
  336.   if CheckVersion(3,5,0) then
  337.   begin
  338.     MovieName := GetField(fieldOriginalTitle);
  339.     if MovieName = '' then
  340.       MovieName := GetField(fieldTranslatedTitle);
  341.     if Input('OFDb', 'Bitte Titel eingeben :', MovieName) then
  342.     begin
  343.       AnalyzePage('http://www.ofdb.de/view.php?page=suchergebnis&SText='+UrlEncode(MovieName)+'&Kat=All');
  344.     end;
  345.   end else
  346.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  347. end.
  348.  
  349.